home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2006 December
/
PCWorld_2006-12_cd.bin
/
v cisle
/
robocopy
/
rktools.exe
/
RCDATA
/
CABINET
/
rktools.msi
/
checkrepl.vbs
< prev
next >
Wrap
Text File
|
2003-04-18
|
6KB
|
188 lines
'---------------------------------------------------------
'
' checkrepl.vbs
'
' Monitor Windows 2000
' Active Directory Replication
'
' mattraff 11/20/2002
'
'---------------------------------------------------------
Sub help()
WScript.Echo ""
WScript.Echo "Monitor replication and enumerate the"
WScript.Echo "replication topology for a given DC."
WScript.Echo ""
WScript.Echo "usage:"
WScript.Echo "======"
WScript.Echo "cscript checkrepl.vbs server"
WScript.Echo ""
WScript.Echo "eg:"
WScript.Echo "==="
WScript.Echo "cscript checkrepl.vbs corpdc01"
WScript.Echo ""
WScript.Echo "Note: This script requires that the Resource Kit tool, iadstools.dll be registered on the local machine."
WScript.Quit
End Sub
Set objArgs = WScript.Arguments
Select Case objArgs.Count
Case 0
help
Case 1
Select Case objArgs(0)
Case "-?"
help
Case "?"
help
Case "/?"
help
Case Else
End Select
Case Else
End Select
Dim site
Dim objSite
Dim DSACon
Dim nameList
Dim partitionResult
Dim nc
Dim outboundCount
Dim outboundPartners
Dim Partners
Dim server
Dim isPartialNC
Set Wshshell = Wscript.CreateObject("Wscript.shell")
server = objArgs(0)
Set DLL=CreateObject("IADsTools.DCFunctions")
'Use iads getSiteForServer to get the TS Server's site.
site=DLL.getSiteForServer(CStr(server),0)
If site = "" Then
WScript.Echo ""
WScript.Echo DLL.LastErrorText
WScript.Quit
End If
'Get the number of connections For this server and the server names
DSACon=DLL.GetDSAConnections(CStr(server), CStr(site) , CStr(server), 0)
'Or...
' If you want to direct the query to a specific server you can specify that server in the following line
'DSACon=DLL.GetDSAConnections("Server Name", CStr(site) , CStr(server), 0)
WScript.Echo ""
WScript.Echo "Inbound Neighbors"
WScript.Echo ""
For i = 1 to DSACon
nameList=DLL.DSAConnectionServerName(i)
WSCript.Echo " " & i & ") " & CStr(nameList)
Next
'Go through the connections one by one and get what info we can
'For i = 1 to DSACon
WScript.Echo ""
'Get writable NC's
partitionResult=DLL.GetNamingContexts(objArgs(0))
For j=1 to partitionResult
nc = DLL.NamingContextName(j)
Partners=DLL.GetDirectPartners(CStr(server), DLL.NamingContextName(j))
WScript.Echo ""
WScript.Echo DLL.ConvertLDAPToDNS(DLL.NamingContextName(j))
For k=1 to Partners
WScript.Echo " " & DLL.DirectPartnerName(k) & " via " & DLL.DirectPartnerTransportDN(k)
'see if there's a failure code other than zero for any of the replication partners
If DLL.DirectPartnerFailReason(k) > 0 then
wscript.echo " Failure replicating partition " + DLL.NamingContextName(j)
WScript.Echo " @ " & DLL.DirectPartnerLastAttemptTime(k)
WScript.Echo " Error: " & DLL.ConvertErrorMsg(DLL.DirectPartnerFailReason(k))
WScript.Echo " " & DLL.DirectPartnerNumberFailures(k) & "consecutive failures."
WScript.Echo " Last successful attempt was @ " & DLL.DirectPartnerLastSuccessTime(k)
WScript.Echo " Current through property update USN : " & DLL.DirectPartnerHighPU(k)
Else
wscript.echo " Last successful attempt: " & DLL.DirectPartnerLastSuccessTime(k)
WScript.Echo " Current through property update USN : " & DLL.DirectPartnerHighPU(k)
End if
Next
'Why was this connection generated?
'Reason=DLL.DSAConnectionReasonCode(i, j)
'WSCript.Echo " Reason for connection: " & Reason
Next
'Get partial NC's for GC's
PartialPartitionResult=DLL.GetPartialNamingContexts(objArgs(0))
WScript.Echo ""
' Check to see if we even have any partial NC's to worry about
If PartialPartitionResult = 0 Then
Else
For j=1 to PartialPartitionResult
Partners=DLL.GetDirectPartners(CStr(server), DLL.NamingContextName(j))
WScript.Echo ""
WScript.Echo DLL.ConvertLDAPToDNS(DLL.NamingContextName(j))
For k=1 to Partners
WScript.Echo " " & DLL.DirectPartnerName(k) & " via " & DLL.DirectPartnerTransportDN(k)
'see if there's a failure code other than zero for any of the replication partners
If DLL.DirectPartnerFailReason(k) > 0 then
wscript.echo " Failure replicating partition " + DLL.NamingContextName(j)
WScript.Echo " @ " & DLL.DirectPartnerLastAttemptTime(k)
WScript.Echo " Error: " & DLL.ConvertErrorMsg(DLL.DirectPartnerFailReason(k))
WScript.Echo " " & DLL.DirectPartnerNumberFailures(k) & "consecutive failures."
WScript.Echo " Last successful attempt was @ " & DLL.DirectPartnerLastSuccessTime(k)
WScript.Echo " Current through property update USN : " & DLL.DirectPartnerHighPU(k)
Else
wscript.echo " Last successful attempt: " & DLL.DirectPartnerLastSuccessTime(k)
WScript.Echo " Current through property update USN : " & DLL.DirectPartnerHighPU(k)
End If
Next
'Why was this connection generated?
'Reason=DLL.DSAConnectionReasonCode(i, j)
'WSCript.Echo " Reason for connection: " & Reason
Next
End If
'Next
'Enumerate Outbound replication partners.
outboundCount=DLL.GetChangeNotifications(CStr(server), CStr(nc), 0, 0)
WScript.Echo ""
WScript.Echo "Outbound Neighbors:"
WScript.Echo ""
For l = 1 to outboundCount
WScript.Echo " " & DLL.NotificationPartnerName(l) & " via " & DLL.NotificationPartnerTransport(l)
WScript.Echo " Object GUID: " & DLL.NotificationPartnerObjectGuid(l)
Next